// PROGRAMA : TABDESC (PROGRAMA BATCH)
// SISTEMA : SISP
// CLIENTE : GEJUSPC
// OBJETIVO : EMITIR LAY-OUT DE TABELAS

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileWriter;
import java.io.IOException;

import org.apache.commons.lang3.StringUtils;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Tabdesc OBJETIVO : EMITIR LAY-OUT DE TABELAS *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/tabdesc")
public class Tabdesc {
	// Views utilizadas
	SicTabelas vwDvetab = new SicTabelas();
	SicTabelas vwTabele = new SicTabelas();
	// Telas/relatorios utilizados
	// Includes utilizados
	Sislac01 sislac01 = new Sislac01();
	Sisll001 sisll001 = new Sisll001();
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	FileWriter arquivo1;
	
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	private int cont;
	private String tabdec;
	private String cod33;
	private String cod34;
	private String tab1;
	private int codtab;
	private String tabela;
	private String chave;
	private String uf;
	private String nomeClasse = this.getClass().getSimpleName();

	public Tabdesc(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar() {
		try {
			main();
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main() throws IOException {
		arquivo1 = new FileWriter(UtilBean.pathFiles()+"arquivo1");
		// //DEFINE PRINTER(EFM = 1)
		codtab = 210;
		tabdec = UtilBean.moveSubstring(tabdec, 0, 3, "N", codtab);
		vwDvetab.pesq = "";
		if (codtab < 100) {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 99);
		} else {
			if (codtab < 200) {
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 199);
			} else {
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 299);
			}

		}

		// vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N",
		// codtab);
		vwDvetab.consultaTabele(Integer.parseInt(vwDvetab.pesq), (long) codtab);
		// 129
		// vwDvetab.consultaTabele(vwDvetab.pesq);

		tabela = vwTabele.getDescricaoElem();
		vwDvetab.fecha();
		if (vwDvetab.registrosProcessados() == 0) {
			tabela = StringUtils.repeat("*", 54);
			// if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			// continue;
			// }
		}

		// while (vwDvetab.leituraTabdecMaiorig(tabdec)) {
		while (vwDvetab.leituraTabdecMaiorig(codtab, "")) {
			if (uf!= null && !uf.trim().equals("")) {
				if (!(vwTabele.getChaveAlfaAcesso() == uf)) {
					continue;
				}
			}

			relatorio();
			if (vwDvetab.quebraDintabcodtab()) {
				break;
			}
		}
		vwDvetab.fecha();
		vwDvetab.pesq = "";
		arquivo1.close();
	}

	private void relatorio() throws IOException {
		String reg = "";
		reg = "";
		reg = UtilBean.moveSubstring(reg, 0, 3, "N", vwDvetab.getCodigoTabela());
		reg = UtilBean.moveSubstring(reg, 3, 12, "N", vwDvetab.getCodigoElem());
		reg = UtilBean.moveSubstring(reg, 15, 14, "A", vwDvetab.getChaveAlfaAcesso());
		reg = UtilBean.moveSubstring(reg, 19, 60, "A", vwDvetab.getDescricaoElem());
		arquivo1.write(reg);
	}
}
